This disclosure relates generally to the field of digital image processing. More particularly, but not by way of limitation, this disclosure relates to color correction techniques to repair memory color rendering artifacts without the need to perform color space conversions.
Transforming image sensor color information to perceptual color information is an essential operation in all digital imaging systems. Further, this transformation must be performed in a manner that yields pleasing results to human viewers. Producing pleasing colors is especially important for memory colors where there is a strong preference favoring primary (red, green, and blue) and secondary (yellow, cyan, and magenta) hues. As used herein, the phrase “memory colors” refers to those colors for which humans express a strong correlation. For example, people expect the sky to be blue, the grass to be green and a stop sign to be red. (Accordingly, as to the sky, grass and stop signs the colors blue, green and red are memory colors.)
Due to the mixed lighting conditions under which many imaging systems operate, memory colors can be rendered as tertiary colors (orange, lime, aqua, denim, violet, and scarlet). When this happens, the resulting image is unpleasing. Prior art approaches to correcting memory color rendering problems (i.e., the tendency of memory colors to render as tertiary colors) use a three-step operation as illustrated in FIG. 1. As shown there, prior art memory color correction operation 100 begins by obtaining an image from an image sensor (block 105). Images so obtained are in the sensor's color space, for example, a red-green-blue (RGB) color space. In a first step, the image is transformed into a second, or working color space such as a hue-saturation-value (HSV) color space (block 110). In a second step, memory color rendering artifacts are detected and corrected (block 115). In a third step, the image is transformed back into the sensor's color space (block 120). While this approach can effectively address memory color rendering problems, color space conversion operations (blocks 110 and 120) are computationally expensive (time consuming). As a result, operations in accordance with FIG. 1 may lead to performance bottlenecks for a hosting application (i.e., an application executing on a platform that performs image processing tasks) or the inability of an imaging system to operate in real-time.
In another prior art approach, three dimensional lookup tables (3D LUTs) are used to correct memory color rendering artifacts. High precision 3D LUTs require large amounts of memory and, may still lead to color contouring in the resulting image. As such, 3D LUTs are an unacceptable solution in many cases. It would be beneficial, therefore, to provide a means to correct memory color rendering artifacts in a timely fashion without the memory requirement of 3D LUT implementations.